Далее мы вводим понятия рациональных кривых и однородных координат. Чтобы проиллюстрировать эти понятия мы даем краткое введение в рациональные кривые Безье. Эти кривые являются частным случаям рациональных кривых B-сплайнов и, таким образом, рассматриваются более полно и строго в последующих главах.
Хотя многочлены имеют много преимуществ, существует ряд важных кривых и типов поверхностей, которые не могут быть представлены именно с помощью многочленов, например, круги, эллипсы, гиперболы, цилиндры, конусы, сферы, и т.п. В качестве примера приведем доказательство того, что единичная окружность в плоскости с центром в начале координат, не может быть представлена с использованием многочленной функции координат. Наоборот, давайте предположим, что
`x(u)=a_0+a_1 u+⋯+a_n u^n`
`y(u)=b_0+b_1 u+⋯+b_n u^n`
Тогда `x^2+y^2-1=0` означает, что
`0=(a_0+a_1 u+⋯+a_n u^n)^2+(b_0+b_1 u+⋯+b_n u^n)^2-1`
`=(a_0^2+b_0^2-1)+2(a_0 a_1+b_0 b_1 )u+(a_1^2+2a_0 a_2+b_1^2+2b_0 b_2)u^2`
`+⋯+(a_{n-1}^2+2a_{n-2} a_n+b_{n-1}^2+2b_{n-2} b_n)u^{2n-2}`
`+2(a_n a_{n-1}+b_n b_{n-1})u^{2n-1}+(a_n^2+b_n^2)u^2n`
Это уравнение должно выполняться для всех `u`, откуда следует, что все коэффициенты равны нулю. Начиная с высочайших степеней и двигаясь вниз, мы показываем в `n` шагов, что все `a_i=0` и `b_i=0` для `1≤i≤n`.
Шаги
Таким образом, `x(u)=a_0` и `y(u)=b_0`, что очевидно невозможно.
Как известно из классической математики всё конические кривые, в том числе круг, могут быть представлены рациональными функциями, которые определяются как отношение двух многочленов. В самом деле, они представлены с рациональными функциями вида
`x(u)={X(u)}/{W(u)}` `y(u)={Y(u)}/{W(u)}` (1.13)
Где `X(u)`, `Y(u)`, и `W(u)` – многочлены, таким образом, все координатные функции имеют одинаковый знаменатель.
Примеры
Пример1.8 | Круг с радиусом 1 и центром в начале координат
`x(u)=(1-u^2)/(1+u^2)` `y(u)=2u/(1+u^2)` |
Пример1.9 | Эллипс с центром в начале координат; `y`-ось это большая ось, `x`-ось это малая ось, и большой и малый
радиус 2 и 1, соответственно
`x(u)=(1-u^2)/(1+u^2)` `y(u)=4u/(1+u^2)` |
Пример1.10 | Гипербола с центром в `P=(0,4⁄3)`; `y`-ось это поперечная ось
`x(u)=(-1+2u)/(1+2u-2u^2)` `y(u)=(4u(1-u))/(1+2u-2u^2)` нижняя ветвь (с вершиной в `P=(0,2⁄3)`) прослеживается для`u in ({1-sqrt 3}/2, {1+ sqrt 3}/2)` |
Пример1.11 | Парабола с вершиной в начале координат; `y`-ось ось симметрии
`x(u)=u` `y(u)=u^2` |
Обратите внимание, что парабола не требует рациональной функции. Читателю следует понять эти функции. Для уравнений окружности легко увидеть, что для любых `u`, `(x(u),y(u))` лежит на единичной окружности с центром в начале координат
`(x(u))^2+(y(u))^2=((1-u^2)/(1+u^2))^2+(2u/(1+u^2))^2`
`=(1-2u^2+u^4+4u^2)/(1+u^2)^2=(1+u^2)^2/(1+u^2)^2=1`
Определим рациональную кривую Безье `n`-ой степени
`C(u)={sum_{i=0}^nB_{i,n}(u)w_iP_i}/{sum_{i=0}^nB_{i,n}(u)w_i}` `0≤u≤1` (1.14)
Где `P_i=(x_i,y_i,z_i)` и `B_{i,n}(u)` как и раньше; `w_i` скаляр, называется весами. Таким образом, `W(u)=∑_{i=0}^nB_{i,n}(u)w_i` является общей функцией знаменателя. За исключением явных случаев, мы предполагаем что `w_i>0` для всех `i`. Это условие обеспечивает `W(u)>0` для все `u in [0,1]`. Мы пишем
`C(u)=sum_{i=0}^nR_{i,n}(u)P_i` `0≤u≤1` (1.15)
где `R_{i,n}(u)={B_{i,n}(u)w_i}/{sum_{j=0}^nB_{j,n}(u)w_j}`
`R_{i,n}(u)` это рациональная базисная функция для этих форм кривых. Рис 1.18а показывает пример кубических базисных функций, и Рис 1.18b описывает кубическую рациональную кривую Безье.
Рисунок 1.18. Рациональные кубические (a) Базисные функции (b) Кривая Безье.
`R_{i,n}(u)` имеет свойства, которые можно легко вывести из уравнения (1.15) и описанные свойства `B_{i,n}(u)`:
Св.1.8 | Не отрицательность: `R_{i,n}(u)≥0` для всех `i`,`n` и `0≤u≤1`; |
Св.1.9 | Разбиение единицы: `∑_{i=0}^nR_{i,n}(u)=1` для всех `0≤u≤1`; |
Св.1.10 | `R_{0,n}(0)=R_{n,n}(1)=1`; |
Св.1.11 | `R_{i,n}(u)` достигает ровно одного максимума на отрезке `[0,1]` |
Св.1.12 |
Они дают следующие геометрические свойства рациональных кривых Безье:
Св.1.13 | Свойство выпуклой оболочки: кривые содержатся в выпуклых оболочках образованных их контрольными точками. |
Св.1.14 | Инвариантность преобразований: повороты, перемещение и масштабирование применяемые к кривой, применяются к их контрольным точкам; |
Св.1.15 | Осцилляцию собственности: такое же, как для полиномиальных кривых Безье (см предыдущий раздел); |
Св.1.16 | Интерполяция конечной точки: `C(0)=P_0` и `C(1)=P_n`; |
Св.1.17 | `k`-ая производная при `u=0` зависит от первой (последней) `k+1` контрольных точек и веса; в частности, `C'(0)` и `C'(1)` параллельны `P_1-P_0` и `P_n-P_{n-1}`, соответственно; |
Св.1.18 | Многочленные кривые Безье частный случай рациональных кривых Безье. |
Примеры
Пример1.12 | Рассмотрим рациональную круговую дугу Безье.
`C(u)=(x(u),y(u))=({1-u^2}/{1+u^2},{2u}/{1+u^2})` `0≤u≤1` представляет один квадрант единичной окружности, как показано на рисунке 1.19a. Выведем теперь квадратичное рациональное Безье представление этой дуги. Очевидно, из Св.1.16 и Св.1.17, `P_0=(1,0)`, `P_1=(1,1)`, и `P_2=(0,0)`. Для весов мы имеем`W(u)=1+u^2=sum_{i=0}^2B_{i,2}(u)w_i=(1-u)^2w_0+2u(1-u)w_1+u^2w_2` Заменяя `u=0` на `w_0=1`, и `u=1` на `w_2=2`. В итоге, заменяя `u=1⁄2` на `5⁄4=1⁄4w_0+1⁄2w_1+1⁄4w_2`, и используя `w_0=1` и `w_2=2` получаем `w_1=1` (Смотри Рис 1.19b) |
Рисунок 1.19. Представление единичного круга, (a) `x(u)=(1-u^2)⁄(1+u^2)` и `y(u)=(2u)⁄(1+u^2)` для одного квадранта; (б) представление Безье, соответствующее рисунку 1.19a (`w_0-1`, `w_1=1`, `w_2=2`).
Рациональные кривые с координатными функциями в виде уравнения. (1.13) (один общий знаменатель), имеют элегантную геометрическую интерпретацию, которая дает эффективную обработку и хранение компактный данных. Идея состоит в том, чтобы использовать однородные координаты для представления рациональной кривой в `n`-мерном пространстве как многочлен кривой в `(n-1)`-мерном. Начнем с точкой в трехмерном Евклидовом пространстве, `P=(x,y,z)`. Тогда `P` записывается в виде `P^w=(wx,wy,wz,w)=(X,Y,Z,W)` в четырехмерном пространстве, `w≠0`. Теперь `P` получается из `P^w` делением всех координат на четвёртую координату, `W`, т. е. на отображение `P^w` из начала координат на гиперплоскость `W=1` (смотри рис 1.20 для двухмерного случая, `P=(x,y)`. Это отображение, обозначаемое `H`, является перспективной картой с центром в начале координат
Рисунок 1.20. Представление евклидовых точек в однородной форме.
`P=H{P^w}=H{(X,Y,Z,W)}={((X/W,Y/W,Z/W) " если " W≠0), ("направление"(X,Y,Z) " если " W=0):}` (1.16)
Обратите внимание, что для любого `x,y,z,w_1,w_2,` где `w_1≠w_2`
`H{P^{w_1}}= H{(w_1x,w_1y,w_1z,w_1)}=(x,y,z)`
`=H{(w_2x,w_2y,w_2z,w_2)}=H{P^{w_2}}`
Теперь для данного набора контрольных точек, `{P_i}`, и весов, `{w_i}`, построим взвешенные контрольные точки, `P_i^w=(w_ix_i,w_iy_i,w_iz_i,w_i)`. Затем определим нерациональную (многочленую) кривую Безье в четырехмерном пространстве
`C^w(u)=sum_{i=0}^nB_{i,n}(u)P_i^w` (1.17)
Тогда, применяя перспективную карту, `H`, на `C^w(u)` получаем соответствующую рациональную кривую Безье уравнения (1.14) (смотри рис 1.21), то есть, выписывая координатные функции уравнения (1.17), получаем
Рисунок 1.21. Геометрическая конструкция рациональной кривой Безье.
`X(u)=sum_{i=0}^nB_{i,n}(u)w_ix_i` `Y(u)=sum_{i=0}^nB_{i,n}(u)w_iy_i`
`Z(u)=sum_{i=0}^nB_{i,n}(u)w_iz_i` `W(u)=sum_{i=0}^nB_{i,n}(u)w_i`
Расположение кривой в трёхмерном пространстве даёт
`x(u)={X(u)}/{W(u)}={sum_{i=0}^nB_{i,n}(u)w_ix_i}/{sum_{i=0}^nB_{i,n}(u)w_i}`
`y(u)={Y(u)}/{W(u)}={sum_{i=0}^nB_{i,n}(u)w_iy_i}/{sum_{i=0}^nB_{i,n}(u)w_i}`
`z(u)={Z(u)}/{W(u)}={sum_{i=0}^nB_{i,n}(u)w_iz_i}/{sum_{i=0}^nB_{i,n}(u)w_i}`
Используя векторную запись, мы получим
`C(u)=(x(u),y(u),z(u))={sum_{i=0}^nB_{i,n}(u)w_i(x_i,y_i,z_i)}/{sum_{i=0}^nB_{i,n}(u)w_i}`
`={sum_{i=0}^nB_{i,n}(u)w_iP_i}/{sum_{i=0}^nB_{i,n}(u)w_i}` (1.18)
Для алгоритмов в этой книге мы, в основном, используют форму, определяемую уравнением (1.17), и аналогичную форму рациональных кривых B-сплайнов. Таким образом, нерациональные формы обрабатываются в четырехмерном пространстве, и результаты находятся в трехмерном пространстве с помощью карты `H`. Мы имеем в виду попеременно либо `C^w(u)` или `C(u)` в качестве рациональных кривых Безье (или B-сплайнов), хотя, строго говоря, `C^w(u)` не рациональная кривая.
Примеры
Пример1.13 | Давайте вернёмся к круговой дуге на рис. 1.19б. Мы имеем `P_0=(1,0)`,
`P_1=(1,1)`, `P_2=(0,1)`, и `w_0=1`, `w_1=1`, `w_2=2`. Следовательно, для уравнения
(1.17) трехмерные контрольные точки `P_0^w=(1,0,1)`, `P_1^w=(1,1,1)`, и `P_2^w=(0,2,2)`. Тогда
`C^w(u)=(1-u)^2P_0^w+``2u(1-u)P_1^w+u^2P_2^w` это параболическая дуга (нерациональная), которая
проецируется на круговую дугу на плоскости `W=1` (смотри рис 1.22).
Рисунок 1.22. Однородное представление дуги окружности. Пусть `u_0` фиксированный. Пусть `C^w(u)` многочлен кривой Безье, мы используем алгоритм де Кастельжо для вычисления `C^w(u_0)`; впоследствии, `C(u_0)=H{C^w(u_0)}`. Таким образом, мы применяем формулу (1.12) для `P_i^w` `P_{k,i}^w(u_0)=(1-u_0)P_{k-1,i}^w+u_0P_{k-1,i+1}^w` для `{(k=1",...,"n),(i=0",...,"n-k):}`(1.19) |
Пример1.14 | Давайте применим формулу (1.19) для вычисления точки `u=1⁄2` на рациональной
круговой дуге Безье примера 1.13. Дуга задается `C^w(u)=(1-u)^2P_0^w+2u(1-u)P_1^w+u^2P_2^w`, тогда
`P_0^w=(1,0,1)`, `P_1^w=(1,1,1)`, и `P_2^w=(0,2,2)`. Треугольное множество полученных точек показаны в
таблице 1.4. Тогда `C(1⁄2)=H{C^w(1⁄2)}=H{(3⁄4,1,5⁄4)}=(3⁄5,4⁄5)`.
Теперь давайте вычислим точку, используя другие представления, которые мы разработали. Позвольте `C(u)=({(1-u^2)}/{(1+u^2)},{(2u)}/{(1+u^2)})` Тогда `C(1/2)=({1-(1/2)^2}/{1+(1/2)^2},{2(1/2)}/{1+(1/2)^2})=(3/5,4/5)` Используя выражение (1.17) `C^w(1/2)=sum_{i=0}^2B_{i,2}(1/2)P_i^w=` `=(1-(1/2))^2(1,0,1)+2(1/2)(1-(1/2))(1,1,1)+(1/2)^2(0,2,2)` `=1/4(1,0,1)+1/2(1,1,1)+1/4(0,2,2)=(3/4,1,5/4)` Проекция `(3/5,4/5)`. Уравнения (1.18) и (1.15) дают одинаковый результат. Наконец, отметим, что `C(1⁄2)=(3⁄5,4⁄5)` не середина круговой дуги в первом квадранте; т.е. параметризация не является равномерным (см раздел 1.1). Точка `(3⁄5,4⁄5)` больше, чем половина длины дуги от начальной точки. Это интуитивно правильно, так как при дифференцировании `C(u)` можно видеть, что стартовая скорость в два раза больше конечной скорости. |